Virtualization is a technology for virtualizing a hardware system into a plurality of virtual hardware systems. As the key technology of virtualization, the VMM is interposed between the physical hardware and the OS to provide the higher layer with virtual hardware resources. The virtual hardware provided by the VMM is referred to as Virtual Machine (VM), and the OS using the VM is referred to as guest OS. The CPU running on the physical hardware is referred to as physical CPU (pCPU), and the CPU provided to the VM is referred to as virtual CPU (vCPU).
The conventional virtualization technology has a problem in that the scalability drops as the number of cores increases when a plurality of guest OSs holds spinlocks on the multi-cores. The spinlocks are mainly used when the critical section is so short such that busy-waiting is better than blocking in order to hold the lock. However, if the vCPU holding a spinlock is preempted by other vCPUs, the other vCPUs trying to acquire the same lock are kept busy-waiting during the preemption. This extends the typical waiting time from a few μs to a few dozen μs and up to a few dozen ms so as to cause unnecessary waste of CPU resource and performance degradation. This problem is called Lock Holder Preemption (LHP).
The scheduling technique proposed to solve this problem has introduced other problems such as resource fragmentation and violation of fairness among the processes. There is therefore a need of a method capable of improving system resource utilization efficiency while achieving fairness among the processes.